﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RepositorioSATT;
using DominioSATT;

namespace ServiceSATT
{
    public class TorneoService : ITorneoService, IListadoTorneoService
    {
        ITorneoRepositorio repositorio;
        #region Miembros de ITorneoService

        public void RankigVarones(ui.IUiRankingTorneo ui)
        {
            ITorneoRepositorio repo = new TorneoRepositorio();
            ui.Ranking = repo.RankigVarones();
        }

        public int Agregar(IInterfazTorneo ui)
        {
            IEventoRepositorio eventoRepo = new EventoRepositorio();
            int IdEvento = eventoRepo.ObtenerId(ui.Evento);
            Evento bEvento = eventoRepo.Obtener(IdEvento);
            ICategoriaRepositorio categoriaRepo = new CategoriaRepositorio();
            int idCategoria = categoriaRepo.ObtenerId(ui.Categoria);
            Categoria bCat = categoriaRepo.Obtener(idCategoria);
            Torneo nTorneo = new Torneo(bEvento, ui.FechaInicio, ui.FechaFin, ui.FechaInicioInscripcion, ui.FechaFinInscripcion,
                ui.Tipo, ui.Cupo, bCat, ui.Sexo, ui.Estado);
            repositorio = new TorneoRepositorio();
            return repositorio.Agregar(nTorneo);
        }

        public void Modificar(IInterfazTorneo ui)
        {
            IEventoRepositorio eventoRepo = new EventoRepositorio();
            int IdEvento = eventoRepo.ObtenerId(ui.Evento);
            Evento bEvento = eventoRepo.Obtener(IdEvento);
            ICategoriaRepositorio categoriaRepo = new CategoriaRepositorio();
            int idCategoria = categoriaRepo.ObtenerId(ui.Categoria);
            Categoria bCat = categoriaRepo.Obtener(idCategoria);
            Torneo nTorneo = new Torneo(ui.IdTorneo, bEvento, ui.FechaInicio, ui.FechaFin, ui.FechaInicioInscripcion, ui.FechaFinInscripcion,
                ui.Tipo, ui.Cupo, bCat, ui.Sexo, ui.Estado);
            repositorio = new TorneoRepositorio();
            repositorio.Modificar(nTorneo);
        }

        public void ListarTorneosPorCerrar(IListadoTorneos ui)
        {
            repositorio = new TorneoRepositorio();
            ui.ListaTorneos = repositorio.ListarTorneosPorCerrar();
        }

        #endregion

        #region Miembros de IListadoTorneoService

        public void Buscar(IInterfazTorneo ui)
        {
            repositorio = new TorneoRepositorio();
            IEventoRepositorio eventoRepo = new EventoRepositorio();
            int IdEvento = eventoRepo.ObtenerId(ui.Evento);
            Torneo bTorneo = repositorio.Obtener(IdEvento, ui.Categoria, ui.Tipo, ui.Sexo);
            ui.IdTorneo = bTorneo.Id;
            ui.Cupo = bTorneo.Cupo;
            ui.Estado = bTorneo.Estado;
            ui.FechaFin = bTorneo.FechaFin;
            ui.FechaFinInscripcion = bTorneo.FechaFinInscripcion;
            ui.FechaInicio = bTorneo.FechaInicio;
            ui.FechaInicioInscripcion = bTorneo.FechaInicioInscripcion;
        }

        public void Listar(IListadoTorneos ui)
        {
            repositorio = new TorneoRepositorio();
            IEventoRepositorio EventoRepo = new EventoRepositorio();
            int IdEvento = EventoRepo.ObtenerId(ui.Evento);
            ui.ListaTorneos = repositorio.Listar(IdEvento);
        }

        public void ListarTorneosAbiertos(IListadoTorneos ui)
        {
            repositorio = new TorneoRepositorio();
            IEventoRepositorio EventoRepo = new EventoRepositorio();
            int IdEvento = EventoRepo.ObtenerId(ui.Evento);
            ui.ListaTorneos = repositorio.ListarTorneosAbiertos(IdEvento);
        }

        #endregion
    }
}
